package com.itheima.edu.info.manager.service;

import com.itheima.edu.info.manager.dao.TeacherDao;
import com.itheima.edu.info.manager.domain.Teacher;

import java.util.Arrays;
import java.util.Comparator;

public class TeacherService {
    //指挥库管把老师对象添加进系统
    private TeacherDao dao = new TeacherDao();

    //业务员中的添加功能
    public boolean addTeacher(Teacher tea) {
        //将库管的添加结果退回给controller客服
        return dao.addTeacher(tea);
    }

    //业务员中的判断学号是否存在功能
    public boolean isExists(String id) {
        //1.拿到系统中已有的索引工号信息
        //1.1指挥库管将系统中的索引工号信息查找出来
        Teacher[] allTeachers = dao.findAllTeacher();
        //2.拿要检验的工号id去已有的老师工号中遍历查找
        //2.1先假设要查找的工号id不存在
        boolean flag = false;
        //2.2遍历已有的学生信息
        for (int i = 0; i < allTeachers.length; i++) {
            //2.3拿到每一位老师的工号
            Teacher tea = allTeachers[i];
            //2.4当前索引位置的老师不为null，并且老师的工号和要查找的工号一致时，修改标记
            if (tea != null && tea.getId().equals(id)) {
                flag = true;
            }

        }
        return flag;
    }

    //业务员中的查看所有老师信息功能
    public Teacher[] findAllTeacher() {
        //1.指挥库管拿到所有老师信息
        Teacher[] allTeacher = dao.findAllTeacher();
        /*
        //2.对库管返回的老师数组进行数据分析处理
        //2.1如果库管返回的数组全是null，当前方法直接返回null
        //2.2如果库管返回的数组至少有一个老师信息，当前方法就直接返回整个库管传过来的老师数据
                                                                            */
        //先假设传过来的数组全是null，一个老师信息都没有
        boolean flag = false;
        //遍历allTeacher
        for (int i = 0; i < allTeacher.length; i++) {
            //拿到每一位索引位置的元素进行判断
            if (allTeacher[i] != null) {
                flag = true;
                break;
            }
        }
        //根据flag的值来决定本次方法的返回值
        if (flag) {
            Arrays.sort(allTeacher, new Comparator<Teacher>() {
                @Override
                public int compare(Teacher o1, Teacher o2) {
                    if (o1!=null&&o2!=null){
                        return o1.getId().compareTo(o2.getId());
                    }else {
                        return 0;
                    }
                }
            });
            return allTeacher;
        } else {
            return null;
        }


    }


    public void deleteTeacherById(String delId) {
        //当前业务员又去指挥库管根据学号去进行删除操作
        dao.deleteTeacherById(delId);
    }

    public void updateTeacherById(String updateId, Teacher newTea) {
            //当前业务员又去指挥库管进行修改操作
        dao.updateTeacherById(updateId,newTea);
    }
}
